//
//  ALBaseTableViewController.swift
//  ALSinaWeiBoSwift
//
//  Created by 柴瑞军 on 16/4/8.
//  Copyright © 2016年 myCompany. All rights reserved.
//

import UIKit

class ALBaseTableViewController: UITableViewController{

    
    /**
     设计思路:
     加载每个界面的初始界面:
     1.每个界面的布局基本相似---因此抽取一个基类让其他的类区继承
     2.view的加载时机不确定,所以定义一个属性来判断view怎么加载
     
     */
    let userLogin1 = ALUserAccountViewModel.userAccountViewModel.userLogin
    
//    重写loadView方法:在该类中如果调用父类的方法,那么加载是根据sb/xib中加载,如果没有调用父类的该方法,那么创建是更具自定定义的view加载view
    override func loadView() {
        userLogin1 ? super.loadView() : setupVistorView()
    }
    private func setupVistorView(){
//        print("\(self)")
        view = vistorView
        vistorView.deledgate = self
//        切换视图的内容
        if self is ALHomeTableViewController {
            
        }else if self is ALMessageTableViewController{
        vistorView.setControllerView("visitordiscover_image_message", title:  "登录后，别人评论你的微博，发给你的消息，都会在这里收到通知")
        }else if self is ALDiscoverTableViewController{
        vistorView.setControllerView("visitordiscover_image_message", title: "登录后，最新、最热微博尽在掌握，不再会与实事潮流擦肩而过")
        }else if self is ALProfileTableViewController{
        vistorView.setControllerView("visitordiscover_image_profile", title: "登录后，你的微博、相册、个人资料会显示在这里，展示给别人")
        }
    }
    
    //懒加载自定义的view
    lazy var vistorView:ALVistorView = ALVistorView()
    override func viewDidLoad() {
        super.viewDidLoad()
        
//        添加导航控制器的uibarbutton
        navigationItem.leftBarButtonItem = UIBarButtonItem.init(title: "登录", style: UIBarButtonItemStyle.Plain, target: self, action: #selector(ALBaseTableViewController.visitorViewDidClickloginButton))
        navigationItem.rightBarButtonItem = UIBarButtonItem.init(title: "注册", style: UIBarButtonItemStyle.Plain, target: self, action: #selector(ALBaseTableViewController.visitorViewDidClickRegisterButton))
    }
    
}
//MARK: - 将代理方法写到类扩展中,类的扩展和OC的很像,只能扩展方法,不能扩展属性,目的是达到代码方便管理的作用

extension ALBaseTableViewController:ALVistorViewDeledgate{

//实现的代理方法必须是协议中非optional修饰的方法
    //MARK:-实现代理方法
    func visitorViewDidClickloginButton() {
        print("\(self)")
        
//        创建控制器
//        let oauthController = ALOauthViewController()
        
//        包装一个导航控制器
        let nav = UINavigationController(rootViewController: ALOauthViewController())
        
        presentViewController(nav, animated: true, completion: nil)
    }
    func visitorViewDidClickRegisterButton() {
        print("\(self)")
    }
 
}